package com.ustcinfo.study.scala.r2.yangyang

import org.apache.spark.{SparkConf, SparkContext}
/**
  * Describe:  scala统计单词次数并排序
  * Author: yang.yang
  * Mail: yang.yang2@ustcinfo.com
  * Date: 2018年08月04日 20:03
  */
object sparkTest {


  def main(args: Array[String]): Unit = {
    //new一个SparkConf对象，设置其Master和AppName
    val sparkConf=new SparkConf().setMaster("local").setAppName("yangyang")
    //传入sparkConf参数
    val sc=new SparkContext(sparkConf)
    //将目标文件设置一个rdd
    val txtRdd=sc.textFile("src/main/resources/sampleData/programmingGuide")
    //过滤每行字符串首位空格
    txtRdd.filter(x=>x.trim().length()>0)
      //将字符串按空格分割
      .map(x=>x.split(" "))
      //将字符串扩展成每行一个单词
      .flatMap(x=>x)
      //将每行单词变为（k，v）键值对
      .map(x=>(x,1))
      //将k值相同的键值对v值相加
      .reduceByKey(_+_)
      //将第一列与第二列调换
      .map(x=>(x._2,x._1))
      //减序排列
      .sortByKey(false)
      //得到前10行
      .take(10)
      //循环输出
      .foreach(println)
  }
}
